// 第一行是任务的类型, 第二行是冷却时间, 在单位时间, 不能同时执行同一个任务;
// 所以每个任务, 需要一个count, count为0 将不再处理, 同时还要一个之前执行的时刻, 用于冷却计算时
// 然后任务应该按照任务的数量级, 降序排列,
// 现在有个难点, 如果任务能错开, 这样正好每次都能执行, 如果进行到新的节点?
// 应该是有个任务队列, 如果任务执行完成, 就出队, 如果没有找到合适的任务, 就自己+1
const readline = require("readline");
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});
let initArr = [];
let n;
rl.on("line", (line)=>{
    if(initArr.length === 0) {
        initArr = line.trim().split(",").map(Number)
    } else {
        n = Number(line.trim())
        console.log(getResult(n, initArr))
        // clear
        initArr.length = 0
        n = undefined
    }

})

function getResult(n, initArr) {
    let obj = {}
    for (const num of initArr) {
        if(obj[num]) {
            obj[num]++
        } else {
            obj[num] = 1
        }
    }
    let pq = []
    for (const key of Object.keys(obj)) {
        pq.push({
            key,
            count: obj[key],
            beforeIndex: -Infinity
        })
    }
    let index = 0;
    while(pq.length) {
        index++;
        for (const i in pq) {
            let obj = pq[i]
            if(index - obj.beforeIndex > n) {
                obj.beforeIndex = index;
                obj.count--
                if(obj.count === 0) {
                    pq.splice(i, 1)
                }
                break
            }
        }
    }
    return index
}